var a = 100;
var b = a;
//内存中有几个100？

var o1 = { name: "zhangsan", age: 100, chinld: { name: "小张三", age: 80 } }
var o2 = o1;
// console.log(o2.name);
o2.age = 101;


//100存在：栈内存；
//{ name: "zhangsan", age: 100 }：堆内存


//在栈内存中存储下a=100;
//在栈内存中开辟一个空间给b；  把a中存储的100，复制一份存到b中；

//在栈内存中开辟一个空间，o1,
// 然后在堆内存中找一个空间存储{ name: "zhangsan", age: 100 }；并且把这个对象的存储地址，放到o1的栈内存.

//在栈内存开辟空间，复制o1栈内存中的内容；

//JSON
//1,JSON序列化
let obj = {
    name: "李四",
    age: 100,
    sayName: function () {
        console.log(this.name);
    },
    sex:undefined,
    arr:[1,2]
}

let obj2 = JSON.parse(JSON.stringify(obj));
obj.age = 101;
// console.log(obj, obj2);


//2，递归
// 斐波那契 前两项之和是第三项；1 1 2 3 5 8 ；
//问：第N项是几？

function fibo(n){
    if(n==1){
        return 1;
    }else if(n==2){
        return 1;
    }else{
        return fibo(n-1)+fibo(n-2)
    }
}
//递归效率极低
// console.log(fibo(45));

// 有一只青蛙：从山底 跳100层台阶上山顶；
//每次能跳一层台阶或者2层台阶；
//问：青蛙有几种跳法？
//举例：如果跳2层台阶：
//1 层：1   
//2层： 1 1                  2 两种
//  3层：1 1 1 ； 1 2 ；21 ； 3中跳法
// 4层： 1111 ；121 ; 112;22;211; 5中跳法


//
function deep(obj){
    let objNew={};
    for(let item in obj){
        console.log(item);   
    }
}

let objDeep = {
    name: "李四",
    age: 100,
    sayName: function () {
        console.log(this.name);
    },
    sex:undefined,
}
deep






















function clone(o) {
    var temp = {}
    if(o instanceof Array){
        return o.concat()
    }
    for (var key in o) {
        if (typeof o[key] == 'object') {
            temp[key] = clone(o[key])
        } else {
            console.log(o[key]);
            temp[key] = o[key]
        }
    }
    return temp
}

let objDee=clone(obj);
console.log(objDee);







